home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Open Transport / OT1.1 Developer Release / Open Transport SDK / Open Tpt Client Developer / Samples / AppleTalk / ATalkSampleUtils.cp < prev    next >
Encoding:
Text File  |  1996-11-19  |  4.6 KB  |  198 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        AtalkSampleUtils.cp
  3.  
  4.     Contains:    Some utility routines used by the AppleTalk sample programs
  5.  
  6.     Copyright:    © 1993-1995 by Apple Computer, Inc., all rights reserved.
  7.  
  8. */
  9.  
  10. #ifndef __ATALKSAMPLEUTILS__
  11. #include "ATalkSampleUtils.h"
  12. #endif
  13. #ifndef __OPENTPTAPPLETALK__
  14. #include <OpenTptAppleTalk.h>
  15. #endif
  16. #ifndef __DESK__
  17. #include <Desk.h>
  18. #endif
  19. #ifndef __STDIO__
  20. #include <stdio.h>
  21. #endif
  22.  
  23. /*******************************************************************************
  24. ** ShowEndpointInfo
  25. **
  26. ********************************************************************************/
  27.  
  28.     static void ShowSize(char* format, SInt32 size)
  29.     {
  30.         if ( size == T_INFINITE )
  31.             fprintf(stderr, "%sT_INFINITE\n", format);
  32.         else if ( size == T_INVALID )
  33.             fprintf(stderr, "%sT_INVALID\n", format);
  34.         else
  35.             fprintf(stderr, "%s%ld\n", format, size);
  36.     }
  37.     
  38. void ShowEndpointInfo(TEndpoint* ep)
  39. {
  40.     TEndpointInfo info;
  41.     OSStatus err = ep->GetEndpointInfo(&info);
  42.     fprintf(stderr, " TEndpointInfo:\n");
  43.     if ( err != kOTNoError )
  44.     {
  45.         fprintf(stderr, "     ERROR! = %d\n", err);
  46.     }
  47.     else
  48.     {
  49.         char* type;
  50.         ShowSize("       addr = ", info.addr);
  51.         ShowSize("    options = ", info.options);
  52.         ShowSize("       tsdu = ", info.tsdu);
  53.         ShowSize("      etsdu = ", info.etsdu);
  54.         ShowSize("    connect = ", info.connect);
  55.         ShowSize("     discon = ", info.discon);
  56.         
  57.         fprintf(stderr, "   servtype = ");
  58.         switch ( info.servtype )
  59.         {
  60.             case T_COTS:        type = "T_COTS"; break;
  61.             case T_COTS_ORD:    type = "T_COTS_ORD"; break;
  62.             case T_CLTS:        type = "T_CLTS"; break;
  63.             case T_TRANS:        type = "T_TRANS"; break;
  64.             case T_TRANS_ORD:    type = "T_TRANS_ORD"; break;
  65.             case T_TRANS_CLTS:    type = "T_TRANS_CLTS"; break;
  66.             default:            type = NULL;
  67.         }
  68.         if ( type != NULL )
  69.             fprintf(stderr, "%s\n", type);
  70.         else
  71.             fprintf(stderr, "%lu\n", info.servtype);
  72.             
  73.         SInt32 flags = info.flags;
  74.         fprintf(stderr, "      flags = ", info.flags);
  75.         Boolean ndComma = false;
  76.         if ( flags & T_SENDZERO )
  77.         {
  78.             flags &= ~T_SENDZERO;
  79.             fprintf(stderr, "T_SENDZERO");
  80.             ndComma = true;
  81.         }
  82.         if ( flags & T_XPG4_1 )
  83.         {
  84.             flags &= ~T_XPG4_1;
  85.             if ( ndComma )
  86.                 fprintf(stderr, ", ");
  87.             ndComma = true;
  88.             fprintf(stderr, "T_XPG4_1");
  89.         }
  90.         if ( flags & T_CAN_RESOLVE_ADDR )
  91.         {
  92.             flags &= ~T_CAN_RESOLVE_ADDR;
  93.             if ( ndComma )
  94.                 fprintf(stderr, ", ");
  95.             ndComma = true;
  96.             fprintf(stderr, "T_CAN_RESOLVE_ADDR");
  97.         }
  98.         if ( flags & T_CAN_SUPPLY_MIB )
  99.         {
  100.             flags &= ~T_CAN_SUPPLY_MIB;
  101.             if ( ndComma )
  102.                 fprintf(stderr, ", ");
  103.             ndComma = true;
  104.             fprintf(stderr, "T_CAN_SUPPLY_MIB");
  105.         }
  106.         if ( flags != 0 )
  107.         {
  108.             if ( ndComma )
  109.                 fprintf(stderr, ", ");
  110.             fprintf(stderr, "%08lX", flags);
  111.             
  112.         }
  113.         fprintf(stderr, "\n");
  114.     }
  115. }
  116.  
  117. /*******************************************************************************
  118. ** ShowEndpointState
  119. ********************************************************************************/
  120.  
  121. void ShowEndpointState(TEndpoint* ep, char* prefixString)
  122. {
  123.     char* strPtr;
  124.     
  125.     OTResult state = ep->GetEndpointState();
  126.     fprintf(stderr, "%sState = %d, ", prefixString, state);
  127.     switch ( state )
  128.     {
  129.         case T_UNINIT:
  130.             strPtr = "T_UNINIT";
  131.             break;
  132.         case T_UNBND:
  133.             strPtr = "T_UNBND";
  134.             break;
  135.         case T_IDLE:
  136.             strPtr = "T_IDLE";
  137.             break;
  138.         case T_OUTCON:
  139.             strPtr = "T_OUTCON";
  140.             break;
  141.         case T_INCON:
  142.             strPtr = "T_INCON";
  143.             break;
  144.         case T_DATAXFER:
  145.             strPtr = "T_DATAXFER";
  146.             break;
  147.         case T_OUTREL:
  148.             strPtr = "T_OUTREL";
  149.             break;
  150.         case T_INREL:
  151.             strPtr = "T_INREL";
  152.             break;
  153. //        case T_INFLUX:
  154. //            strPtr = "T_INFLUX";
  155. //            break;
  156.         default:
  157.             strPtr = "Unknown";
  158.     }
  159.     fprintf(stderr,"%s\n", strPtr);
  160. }
  161.  
  162. /*******************************************************************************
  163. ** ShowFullEndpointData
  164. **
  165. ********************************************************************************/
  166.  
  167. void ShowFullEndpointData(TEndpoint* ep)
  168. {
  169.     fprintf(stderr, "FULL ENDPOINT INFO FOR ENDPOINT AT %08lX\n", ep);
  170.     
  171.     fprintf(stderr, "               Mode = %s\n", (ep->IsSynchronous() ? "Synchronous" : "Asynchronous"));
  172.  
  173.     ShowEndpointState(ep, "              ");
  174.     
  175.     fprintf(stderr, "             Look() = %d\n", ep->Look());
  176.     
  177.     ShowEndpointInfo(ep);
  178.     
  179.     fprintf(stderr, "");
  180. }
  181.  
  182. /*******************************************************************************
  183. ** ShowDDPAddress -- print out an AppleTalk DDP address
  184. ********************************************************************************/
  185.  
  186. void ShowDDPAddress(DDPAddress* addr)
  187. {
  188.     if (addr->GetAddressType() == AF_ATALK_DDP ||
  189.         addr->GetAddressType() == AF_ATALK_DDPNBP)
  190.     {
  191.         fprintf(stderr, "Net $%04X, Node $%02X, Socket $%02X, Type $%02X",
  192.             addr->GetNetwork(), addr->GetNode(), addr->GetSocket(), addr->GetType());
  193.     }
  194.     else
  195.         fprintf(stderr, "Not DDP Addr!");
  196. }
  197.  
  198.